package com.fzy.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

@WebServlet("/DeleteNewsServlet")
public class DeleteNewsServlet extends HttpServlet {

    // 序列化版本号，用于确保序列化和反序列化的兼容性
    private static final long serialVersionUID = 1L;


    public DeleteNewsServlet() {
        // 调用父类的构造函数
        super();

    }

    /**
     * 处理 HTTP GET 请求的方法
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        try {
            // 加载 MySQL 数据库驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 建立数据库连接，指定数据库 URL、用户名和密码
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/news?useUnicode=true&characterEncoding=utf-8", "root", "13100140892Fzy!");
            // 准备预编译的 SQL 删除语句
            PreparedStatement pst = conn.prepareStatement("delete from news_table where id=?");
            System.out.println("删除新闻"+request.getParameter("id"));
            // 设置 SQL 语句中的参数，将请求参数中的 id 转换为整数并设置到第一个参数位置
            pst.setInt(1, Integer.parseInt(request.getParameter("id")));
            // 执行 SQL 删除语句，并返回受影响的行数
            int rs = pst.executeUpdate();
            // 获取用于向客户端输出文本的字符输出流
            PrintWriter out = response.getWriter();
            if (rs > 0) {
                // 如果受影响的行数大于 0，说明删除成功，向客户端输出提示信息
                out.print("删除成功");
                // 重定向到 SelectNewsServlet，刷新新闻列表
                response.sendRedirect("newsList");
            } else {
                // 如果受影响的行数不大于 0，说明删除失败，向客户端输出提示信息
                out.print("删除失败");
                // 重定向到 SelectNewsServlet，刷新新闻列表
                response.sendRedirect("newsList");
            }
        } catch (Exception e) {
            // 捕获并打印异常堆栈信息
            e.printStackTrace();
        }
    }

    /**
     * 处理 HTTP POST 请求的方法
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 调用 doGet 方法处理 POST 请求
        doGet(request, response);
    }
}
